본 게시글의 원문은 Yann Debray의 MATLAB with Python Book 입니다. 해당 책은 MIT 라이센스를 따르기 때문에 개인적으로 번역하여 재배포 합니다. 본 포스팅에는 추후 유료 수익을 위한 광고가 부착될 수도 있습니다.

MIT License

Copyright (c) 2023 Yann Debray

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

본 게시물에서 활용된 소스 코드들은 모두 Yann Debray의 GitHub Repo에서 확인할 수 있습니다.

1.1. 과학적 계산의 역사 요약

1.1.1. 수치 해석의 기원

1970년대에 Cleve Moler는 EISPACK (고유값 계산용) 및 LINPACK (선형 대수용)이라는 Fortran 라이브러리의 개발에 적극적으로 참여했습니다. 그는 뉴멕시코 대학의 수학 교수로서 학생들이 Fortran 래퍼 코드를 작성하고 컴파일하고 디버깅하고 다시 컴파일하고 실행하는 번거로움 없이 이러한 라이브러리에 접근할 수 있게 하고 싶었습니다.

그래서 그는 Fortran에서 행렬 연산을 위한 대화형 인터프리터인 MATLAB을 만들었습니다 (MATrix LABoratory의 약자로, Matrix 영화와는 아무 상관이 없습니다. 그 영화는 30년 후에 나왔습니다). 이 첫 번째 버전은 EISPACK과 LINPACK의 일부 루틴을 기반으로 하였으며 80개의 함수만 포함되어 있었습니다.

이 시절의 MATLAB 매뉴얼 사진은 초기 소프트웨어의 범위를 보여줍니다.

당시에 MATLAB은 아직 프로그래밍 언어가 아니었습니다. 파일 확장자 (m-스크립트)도 없었고, 툴박스도 없었습니다. 유일하게 사용 가능한 데이터 타입은 행렬이었습니다. 그래픽 기능은 화면에 그려지는 별표(asterisks)였습니다 (Astérix The Gaul과는 무관합니다).

함수를 추가하려면 Fortran 소스 코드를 수정하고 모든 것을 다시 컴파일해야 했습니다. 따라서 소스 코드는 공개되었으며, 그렇게 해야 했습니다 (오픈 소스 개념은 80년대에 리처드 스톨만과 자유 소프트웨어 운동과 함께 나타났습니다).

칼리포니아의 스탠포드 대학에서 Cleve Moler가 수치 해석 강의를 한 후, MIT에서 훈련받은 엔지니어가 그에게 다가왔습니다. “나는 Cleve에게 자신을 소개했어요.” 이것이 Jack Little이 그들의 첫 만남에 대한 이야기를 전하는 방식입니다. Jack Little은 MATLAB이 PC에서 사용될 수 있는 가능성을 미리 예측하고 C로 재작성했습니다. 그는 Steve Jobs와 Bill Gates와 같이 개인용 컴퓨팅이 IBM의 메인프레임 서버 비즈니스를 이길 것이라는 것을 알고 있었습니다. 또한 소프트웨어 기능을 확장하기 위해 프로그램 파일을 작성하는 기능과, 잘 구조화되고 모듈식이며 확장 가능한 비즈니스 모델이 될 툴박스를 추가했습니다. 1984년, 그는 (The) MathWorks라는 회사를 설립하여 MATLAB을 상업화했습니다.

MATLAB의 기원에 대해 더 읽어보세요:

1.1.2. 평행 우주에서

1980년대에, Guido van Rossum은 Centrum Wiskunde & Informatica (줄여서 CWI; 영어: “수학과 컴퓨터 과학 국립 연구소”)에서 ABC라는 언어에 관련된 작업을 하고 있었습니다.

“ABC는 컴퓨터 프로그래머나 소프트웨어 개발자가 아닌 지능 있는 컴퓨터 사용자들을 위해 가르칠 수 있는 프로그래밍 언어로서 개발되었습니다. 1970년대 후반에 ABC의 주요 설계자들은 이와 같은 대상을 위해 전통적인 프로그래밍 언어를 가르쳤습니다. 그 학생들에는 물리학자부터 사회과학자, 언어학자에 이르기까지 다양한 과학자들이 포함되어 있었는데, 이들은 매우 큰 컴퓨터를 사용하는 데 도움이 필요했습니다. 그들은 자신들만의 지식을 가진 똑똑한 사람들이었지만, 프로그래밍 언어가 전통적으로 정의한 특정한 제한, 제약 및 임의의 규칙에 놀랐습니다. 이러한 사용자 피드백을 바탕으로 ABC의 설계자들은 다른 언어를 개발하려고 노력했습니다.”

1986년에 Guido van Rossum은 CWI에서 다른 프로젝트인 Amoeba 프로젝트로 옮겼습니다. Amoeba는 분산 운영 체제였습니다. 1980년대 후반에, 그들은 스크립팅 언어가 필요하다는 것을 깨달았습니다. 이 프로젝트 내에서 주어진 자유로운 환경을 통해 Guido van Rossum은 자신의 “미니 프로젝트”를 시작했습니다.

1989년 12월, Van Rossum은 “크리스마스 주변에 시간을 보내기 위한 ‘취미’ 프로그래밍 프로젝트가 필요했고, 최근에 생각하고 있었던 ‘새로운 스크립팅 언어: ABC의 계승 자손으로서 Unix/C 해커들에게 호소할 것 같은’” 인터프리터를 작성하기로 결정했습니다. 그는 “Python”이라는 이름을 선택한 이유를 “약간 불손한 기분(그리고 Monty Python’s Flying Circus의 큰 팬이었기 때문)”으로 설명합니다. (“Programming Python” Guido van Rossum, 1996 서문)

그는 간단한 가상 머신, 간단한 파서 및 간단한 런타임을 작성했습니다. 그는 기본 구문을 만들었는데, 문장 그룹화에 들여쓰기를 사용했습니다. 그리고 몇 가지 데이터 타입을 개발했습니다: 딕셔너리, 리스트, 문자열 및 숫자. 이로써 Python이 탄생하게 되었습니다.

Guido의 의견에 따르면, Python의 성공에 대한 가장 혁신적인 기여는 확장하기 쉽도록 만든 것이었습니다.

Python 언어의 주요 이정표:

  • 1991년: Guido Van Rossum에 의해 alt.sources에 Python 0.9.0이 게시됨
  • 1994년: Python 1.0. 람다 함수의 맵, 필터, 리듀스와 같은 함수형 프로그래밍을 포함
  • 2000년: Python 2.0. 리스트 컴프리헨션과 가비지 컬렉션을 도입
  • 2008년: Python 3. 기본적인 디자인 결함을 수정하고 하위 호환성이 없음
  • 2022년: Python 2의 지원 종료, 최종 버전 2.7.18이 출시됨

Python에 대해 더 읽어보세요: